<?php
/**
* Sistema de segurança com acesso restrito
*
* Usado para restringir o acesso de certas páginas do seu site
*
* @author Thiago Belem <contato@thiagobelem.net>
* @link http://thiagobelem.net/
*
* @version 1.0
* @package SistemaSeguranca
*/

//  Configurações do Script
// ==============================
$_SG['abreSessao'] = true;         // Inicia a sessão com um session_start()?

$_SG['caseSensitive'] = false;     // Usar case-sensitive? Onde 'thiago' é diferente de 'THIAGO'

$_SG['validaSempre'] = true;       // Deseja validar o usuário e a senha a cada carregamento de página?
// Evita que, ao mudar os dados do usuário no banco de dado o mesmo contiue logado.

include('conecta.php');
$_SG['paginaLogin'] = 'loginsuper.php'; // Página de login
$_SG['tabela'] = 'admin';       // Nome da tabela onde os usuários são salvos
// ==============================

// ======================================
//   ~ Não edite a partir deste ponto ~
// ======================================

// Verifica se precisa iniciar a sessão
if ($_SG['abreSessao'] == true)
{
	session_start();
}

/**
* Função que valida um usuário e senha
*
* @param string $usuario - O usuário a ser validado
* @param string $senha - A senha a ser validada
*
* @return bool - Se o usuário foi validado ou não (true/false)
*/
function validaUsuario($usuario, $senha)
{
	global $_SG;

	$cS = ($_SG['caseSensitive']) ? 'BINARY' : '';

	// Usa a função addslashes para escapar as aspas
	$nusuario = addslashes($usuario);
	$nsenha = addslashes($senha);
	
	// Monta uma consulta SQL (query) para procurar um usuário
	$sql = "SELECT * FROM ".$_SG['tabela']." WHERE ".$cS." usuario='".$nusuario."' AND ".$cS." senha='".$nsenha."' LIMIT 1";
	$query = mysql_query($sql);
	$resultado = mysql_fetch_assoc($query);
	
	// Verifica se encontrou algum registro
	if (empty($resultado))
	{
		// Nenhum registro foi encontrado => o usuário é inválido
		return false;
	}
	else
	{
		// O registro foi encontrado => o usuário é valido
		$_SESSION['sistemaIdSUsuario'] = $resultado['idadmin'];
		
		// Verifica a opção se sempre validar o login
		if ($_SG['validaSempre'] == true)
		{
			// Definimos dois valores na sessão com os dados do login
			$_SESSION['sistemaSLogin'] = $usuario;
			$_SESSION['sistemaSSenha'] = $senha;
		}
		return true;
	}
}

/**
* Função que protege uma página
*/
function protegePagina()
{
	global $_SG;
	if (!isset($_SESSION['sistemaIdSUsuario']))
	{
		// Não há usuário logado, manda pra página de login
		expulsaVisitante();
	}
	// Há usuário logado, verifica se precisa validar o login novamente
	if ($_SG['validaSempre'] == true)
	{
		// Verifica se os dados salvos na sessão batem com os dados do banco de dados
		if (!validaUsuario($_SESSION['sistemaSLogin'], $_SESSION['sistemaSSenha']))
		{
			// Os dados não batem, manda pra tela de login
			expulsaVisitante();
		}
	}
}

/**
* Função para expulsar um visitante
*/
function expulsaVisitante()
{
	global $_SG;
	// Remove as variáveis da sessão (caso elas existam)
	$_SESSION['sistemaIdSUsuario'] = '';
	$_SESSION['sistemaSLogin'] = '';
	$_SESSION['sistemaSSenha'] = '';
	unset($_SESSION['sistemaIdSUsuario'], $_SESSION['sistemaSLogin'], $_SESSION['sistemaSSenha']);
	// Manda pra tela de login
	header("Location: ".$_SG['paginaLogin']);
}
?>